<?php

namespace Home\Controller; //当前命名空间跟文件目录一样
use Think\Controller;

class GoodsController extends Controller
{
	private $pageInfo;

	//首页列表展示功能
	public function index()
	{
		//实例化分类控制器对象，调用其显示分类的show()方法，获取分类信息
		$categoryInfo = R('Home/Category/show');
		//调用模型类的category()方法，解析字符串，得到理想的分类信息数组
		$model = D('Goods');
		$info = $model->category($categoryInfo); //重新组合分类数组
		$this->assign('categoryInfo', $info);  //返回重新组合分类数组,到视图中去显示分页列表

		//接收get传递的商品分类编号ci，默认为空，显示最新上架商品
		$ci = I('get.ci') != null ? I('get.ci') : null; //没有传递默认为空

		//所以总结出来传递page和array('category_id'=>3)给模型分页方法,然后返回处理后的当前页page和总页数pages和limit字符
		//定义当前页码因为页码是用户点击出现的(get方法获得)，用户第一次进来没有传值，这时应有一个默认页码设置为1
		$page = I('get.page') !== null ? I('get.page') : 1;
		$where = array('category_id' => $ci);      //商品分类编号为ci值

		//调用模型类的分页方法获取处理后的page、pages、limit，返回的是数组形式，按这个顺序0、1、2依次获取，参数5为每页显示商品条数
		$this->pageInfo = $model->paging(4, $page, $where);

		//获取最新上架商品信息,按照入库时间来排，并添加分页显示
		$where = isset($where['category_id']) ? $where : '';
		$goodsInfo = $model->limit($this->pageInfo[2])->order('goods_indate desc')->where($where)->select();

		//显示分页视图，创建分页类对象
		$p = new \Home\Components\Pager($this->pageInfo[0], $this->pageInfo[1]); //直接通过new组件类对象传递page和pages，初始化该对象，返回生成的分页视图
		$paging = $p->fenye($where);              //调用该组件类的fenye方法，获得返回的分页视图
		$this->assign("paging", $paging);  //将该视图作为变量传递到index视图中
		//将获取到的商品信息，传给视图
		$this->assign("goodsInfo", $goodsInfo);
		$this->display();
	}

	//商品详细信息展示功能
	public function item()
	{
		$goods_id = I('get.gi');   //获取get方式传递过来的商品编号
		$model = M('Goods');      //实例化商品模型类
		$goodsInfo = $model->where(array('goods_id' => $goods_id))->find();  //获取指定商品id的详细信息	
		$this->assign("goodsInfo", $goodsInfo);	    			//将获取到的商品信息，传给视图
		$condition = array('category_id' => $goodsInfo['category_id']); //条件1推出相同分类产品
		$where['goods_id'] = array('neq', $goods_id); 			//条件2不推荐同一个商品	
		$samilarInfo = $model->where($condition)->where($where)->select();  //获取相似商品id的详细信息
		shuffle($samilarInfo);   						//将获取到同类的商品信息，随机打乱顺序，传给视图,推荐给用户
		$this->assign("samilarInfo", $samilarInfo);
		$this->display();
	}

	//商品查询功能
	public function query()
	{
		//获取传递的商品名称信息
		$goodsName = I('gn');
		$where = array('goods_name' => array("like", '%' . $goodsName . '%')); //构建商品名称模糊查询条件
		$model = D('goods');   //实例化模型类对象	
		$goodsInfo = $model->limit($this->pageInfo[2])->where($where)->select();  //获取模糊查询商品信息
		$this->assign("goodsInfo", $goodsInfo);
		$this->display();
	}
}
